'use strict';
const Controller = require('egg').Controller;
class LoginController extends Controller {
  /**
   * 注册接口-----------------------------start-----------------------------
   */
  async register () {
    const { ctx } = this;
    // 1.获取前端传来的参数
    // ctx.body = `body: ${JSON.stringify(ctx.request.body)}`;
    ctx.body = ctx.request.body;
    // 打印参数到日志文件
    ctx.coreLogger.info(ctx.body);
    // console.log('models', this.app.model);
    let retrunMap = {};
    try {
      const users = await this.ctx.service.userService.addUser(ctx.body);
      retrunMap = { code: '1', msg: '注册成功', data: users };
    } catch (error) {
      console.log(error);
      retrunMap = { code: '0', msg: '注册失败' };
    }
    // 把注册信息传递后service用于保存数据库
    // 调用用户的service保存注册信息
    ctx.body = retrunMap;
  }
  /**
   * 登录接口----------------------------start------------------------------
   */
  async login () {
    const { ctx } = this;
    // 获取前端传来的登录信息,body只接收json格式的请求参数 post
    ctx.body = ctx.request.body;
    // 根据具体业务处理参数,把登录信息传给service去查询数据库
    const users = await this.ctx.service.userService.findUser(ctx.body);
    // 根据业务处理请求参数-根据查询结果判断是不是登录成功
    console.log(users);
    // 定义一个json用于保存返回给前端的信息
    // 判断数据库返回的结果是否为空，还有id是否为空，两种情况同时满足才是登录成功
    const map = {};
    if (users !== null && (users.id !== null || users.id !== '')) {
      // 生成token的方式:token存入用户名id和用户名
      const token = ctx.app.jwt.sign({
        id: users.id, // 需要存储的token数据
        account: users.account,
      }, ctx.app.config.jwt.secret, {
        // expiresIn: '2 days', 
        // 时间根据自己定，具体可参考jsonwebtoken插件官方说明
      });
      console.log(token);// 生成的token
      // ctx.body = token;
      map.code = '1';
      map.msg = '登录成功';
      map.token = token;
    } else {
      map.code = '0';
      map.msg = '登录失败';
      map.token = '';
    }
    // 把结果返回给前端
    ctx.body = map;
    // 访问admin数据时进行验证token，并且解析 token 的数据
    console.log('我访问到登录的接口了');
  }
}

module.exports = LoginController;
